#include <iostream>
using std::cout;
using std::endl;

//函数模板与普通函数重载
//普通函数的优先级更高
template <class T1, class T2>
T1 add(T1 t1, T2 t2)
{
    return t1 + t2;
}


/* short add(short s1, short s2){ */
/*     cout << "add(short,short)" << endl; */
/*     return s1 + s2; */
/* } */

void test0(){
    short s1 = 1, s2 = 2;
    cout << add(s1,s2) << endl;   //调用普通函数

    //T1和T2推导出相同类型是可以的
    //模板的多个类型参数可以实例化为相同的类型
    cout << add<short>(s1,s2) << endl;//使用函数模板
}

int main(void){
    test0();
    return 0;
}
